﻿@model DiscountModel

@using SDF.Core.Domain.Discounts;
@using SDF.Services
@using SDF.Web.Framework.UI;

@{
    Html.AddScriptParts("~/Administration/Scripts/jquery.tmpl.min.js");
}

@Html.ValidationSummary(false)
@Html.HiddenFor(model => model.Id)

<script>
    $(document).ready(function() {
        bindBootstrapTabSelectEvent('discount-edit');
    });
</script>

<div class="content">
    <div class="form-horizontal">
        <div id="discount-edit" class="nav-tabs-custom">
            <ul class="nav nav-tabs">
                @Html.RenderBootstrapTabHeader("tab-info", @T("Admin.Promotions.Discounts.Info"), true)
                @Html.RenderBootstrapTabHeader("tab-requirements", @T("Admin.Promotions.Discounts.Requirements"))
                @Html.RenderBootstrapTabHeader("tab-applied-to-products", @T("Admin.Promotions.Discounts.AppliedToProducts"))
                @Html.RenderBootstrapTabHeader("tab-applied-to-categories", @T("Admin.Promotions.Discounts.AppliedToCategories"))
                @Html.RenderBootstrapTabHeader("tab-applied-to-manufacturers", @T("Admin.Promotions.Discounts.AppliedToManufacturers"))
                @if (Model.Id > 0)
                {
                    @Html.RenderBootstrapTabHeader("tab-history", @T("Admin.Promotions.Discounts.History"))
                }
            </ul>
            <div class="tab-content">
                @Html.RenderBootstrapTabContent("tab-info", @TabInfo(), true)
                @Html.RenderBootstrapTabContent("tab-requirements", @TabRequirements())
                @Html.RenderBootstrapTabContent("tab-applied-to-products", @TabAppliedToProducts())
                @Html.RenderBootstrapTabContent("tab-applied-to-categories", @TabAppliedToCategories())
                @Html.RenderBootstrapTabContent("tab-applied-to-manufacturers", @TabAppliedToManufacturers())
                @if (Model.Id > 0)
                {
                    @Html.RenderBootstrapTabContent("tab-history", @TabHistory())
                }
            </div>
        </div>
    </div>
</div>

@{
    //custom tabs
    var eventMessage = new AdminTabStripCreated(this.Html, "discount-edit");
    EngineContext.Current.Resolve<IEventPublisher>().Publish(eventMessage);
    foreach (var eventBlock in eventMessage.BlocksToRender)
    {
        @eventBlock
    }
}

@*save selected tab name*@
<input type="hidden" id="selected-tab-name" name="selected-tab-name" value="@(Html.GetSelectedTabName())">

@helper TabInfo()
{
    <script type="text/javascript">
        $(document).ready(function() {
            $("#@Html.FieldIdFor(model => model.DiscountTypeId)").change(toggleDiscountType);
            $("#@Html.FieldIdFor(model => model.UsePercentage)").click(toggleUsePercentage);
            $("#@Html.FieldIdFor(model => model.RequiresCouponCode)").click(toggleRequiresCouponCode);
            $("#@Html.FieldIdFor(model => model.DiscountLimitationId)").change(toggleLimitation);

            toggleDiscountType();
            toggleLimitation();
            toggleUsePercentage();
            toggleRequiresCouponCode();
        });

        function toggleDiscountType() {
            var selectedDiscountTypeId = $("#@Html.FieldIdFor(model => model.DiscountTypeId)").val();
            if (selectedDiscountTypeId == @(((int) DiscountType.AssignedToCategories).ToString())) {
                $('[data-tab-name=tab-applied-to-categories]').show();
            $('[data-tab-name=tab-applied-to-manufacturers]').hide();
            $('[data-tab-name=tab-applied-to-products]').hide();
            $('#pnlMaximumDiscountedQuantity').show();
            $('#pnlAppliedToSubCategories').show();
        } else if (selectedDiscountTypeId == @(((int) DiscountType.AssignedToManufacturers).ToString())) {
            $('[data-tab-name=tab-applied-to-categories]').hide();
            $('[data-tab-name=tab-applied-to-manufacturers]').show();
            $('[data-tab-name=tab-applied-to-products]').hide();
            $('#pnlMaximumDiscountedQuantity').show();
            $('#pnlAppliedToSubCategories').hide();
        } else if (selectedDiscountTypeId == @(((int) DiscountType.AssignedToSkus).ToString())) {
            $('[data-tab-name=tab-applied-to-categories]').hide();
            $('[data-tab-name=tab-applied-to-manufacturers]').hide();
            $('[data-tab-name=tab-applied-to-products]').show();
            $('#pnlMaximumDiscountedQuantity').show();
            $('#pnlAppliedToSubCategories').hide();
        } else {
                $('[data-tab-name=tab-applied-to-categories]').hide();
        $('[data-tab-name=tab-applied-to-manufacturers]').hide();
        $('[data-tab-name=tab-applied-to-products]').hide();
        $('#pnlMaximumDiscountedQuantity').hide();
        $('#pnlAppliedToSubCategories').hide();
        }
        }

        function toggleLimitation() {
            var selectedDiscountLimitationId = $("#@Html.FieldIdFor(model => model.DiscountLimitationId)").val();
            if (selectedDiscountLimitationId == @(((int) DiscountLimitationType.NTimesOnly).ToString()) || selectedDiscountLimitationId == @(((int) DiscountLimitationType.NTimesPerCustomer).ToString())) {
                //'N Times Only' or 'N Times Per Customer'
                $('#pnlLimitationTimes').show();
        } else {
                $('#pnlLimitationTimes').hide();
        }
        }

        function toggleUsePercentage() {
            if ($('#@Html.FieldIdFor(model => model.UsePercentage)').is(':checked')) {
                $('#pnlDiscountPercentage').show();
                $('#pnlDiscountAmount').hide();
                $('#pnlMaximumDiscountAmount').show();
            } else {
                $('#pnlDiscountPercentage').hide();
                $('#pnlDiscountAmount').show();
                $('#pnlMaximumDiscountAmount').hide();
            }
        }

        function toggleRequiresCouponCode() {
            if ($('#@Html.FieldIdFor(model => model.RequiresCouponCode)').is(':checked')) {
                $('#pnlCouponCode').show();
            } else {
                $('#pnlCouponCode').hide();
            }
        }
    </script>

    <div class="panel-group">
        <div class="panel panel-default">
            <div class="panel-body">
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.Name)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.Name)
                        @Html.ValidationMessageFor(model => model.Name)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.DiscountTypeId)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFDropDownListFor(model => model.DiscountTypeId, ((DiscountType)Model.DiscountTypeId).ToSelectList())
                        @Html.ValidationMessageFor(model => model.DiscountTypeId)
                    </div>
                </div>
                <div class="form-group" id="pnlAppliedToSubCategories">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.AppliedToSubCategories)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.AppliedToSubCategories)
                        @Html.ValidationMessageFor(model => model.AppliedToSubCategories)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.UsePercentage)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.UsePercentage)
                        @Html.ValidationMessageFor(model => model.UsePercentage)
                    </div>
                </div>
                <div class="form-group" id="pnlDiscountAmount">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.DiscountAmount)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.DiscountAmount) [@Model.PrimaryProjectCurrencyCode]
                        @Html.ValidationMessageFor(model => model.DiscountAmount)
                    </div>
                </div>
                <div class="form-group" id="pnlDiscountPercentage">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.DiscountPercentage)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.DiscountPercentage)
                        @Html.ValidationMessageFor(model => model.DiscountPercentage)
                    </div>
                </div>
                <div class="form-group" id="pnlMaximumDiscountAmount">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.MaximumDiscountAmount)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.MaximumDiscountAmount) [@Model.PrimaryProjectCurrencyCode]
                        @Html.ValidationMessageFor(model => model.MaximumDiscountAmount)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.RequiresCouponCode)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.RequiresCouponCode)
                        @Html.ValidationMessageFor(model => model.RequiresCouponCode)
                    </div>
                </div>
                <div class="form-group" id="pnlCouponCode">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.CouponCode)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.CouponCode)
                        @Html.ValidationMessageFor(model => model.CouponCode)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.StartDateUtc)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.StartDateUtc)
                        @Html.ValidationMessageFor(model => model.StartDateUtc)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.EndDateUtc)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.EndDateUtc)
                        @Html.ValidationMessageFor(model => model.EndDateUtc)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.IsCumulative)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.IsCumulative)
                        @Html.ValidationMessageFor(model => model.IsCumulative)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.DiscountLimitationId)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFDropDownListFor(model => model.DiscountLimitationId, ((DiscountLimitationType)Model.DiscountLimitationId).ToSelectList())
                        @Html.ValidationMessageFor(model => model.DiscountLimitationId)
                    </div>
                </div>
                <div class="form-group" id="pnlLimitationTimes">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.LimitationTimes)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.LimitationTimes)
                        @Html.ValidationMessageFor(model => model.LimitationTimes) @T("Admin.Promotions.Discounts.Fields.LimitationTimes.Times")
                    </div>
                </div>
                <div class="form-group" id="pnlMaximumDiscountedQuantity">
                    <div class="col-md-3">
                        @Html.SDFLabelFor(model => model.MaximumDiscountedQuantity)
                    </div>
                    <div class="col-md-9">
                        @Html.SDFEditorFor(model => model.MaximumDiscountedQuantity)
                        @Html.ValidationMessageFor(model => model.MaximumDiscountedQuantity)
                    </div>
                </div>
            </div>
        </div>
    </div>
}

@helper TabRequirements()
{
    <div class="panel-group">
        @if (Model.Id > 0)
        {
            <script type="text/javascript">
                $(document).ready(function() {
                    $("#@Html.FieldIdFor(model => model.AddDiscountRequirement)").change(loadNewRequirementBox);

                    //load add requirement box
                    loadNewRequirementBox();

                    //load existing requirements
                    loadExistingRequirements();

                    //adding requirement event
                    $("#discountRequirementContainer").bind('nopnewdiscountruleadded', function(event, newRequirementId) {

                        var discountId = @Model.Id;

                        var postData = {
                            discountRequirementId: newRequirementId,
                            discountId: discountId
                        };
                        addAntiForgeryToken(postData);

                        $.ajax({
                            cache: false,
                            type: "POST",
                            url: "@(Url.Action("GetDiscountRequirementMetaInfo", "Discount"))",
                            data: postData,
                            success: function(result) {
                                discountRequirements.push({ discountRequirementId: newRequirementId, ruleName: result.ruleName, url: result.url });
                                loadExistingRequirements();
                            },
                            error: function(xhr, ajaxOptions, thrownError) {
                                alert('Failed to load new discount requirement info. Please refresh the page');
                            }
                        });
                    });
                });

                //load requirement HTML
                function loadRequirement(configureRuleUrl, placeholderName) {
                    $.ajax({
                        cache: false,
                        url: configureRuleUrl,
                        dataType: "html",
                        success: function(result) {
                            $(placeholderName).html(result);
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                            $(placeholderName).html('Failed to load requirement content.');
                        }
                    });
                }

                //load HTML for adding requirement
                function loadNewRequirementBox() {
                    //load URL
                    var ruleSystemName = $("#@Html.FieldIdFor(model => model.AddDiscountRequirement)").val();
                    var discountId = @Model.Id;
                    if (ruleSystemName != '') {
                        $.ajax({
                            cache: false,
                            url: "@(Url.Action("GetDiscountRequirementConfigurationUrl", "Discount"))",
                            data: { "systemName": ruleSystemName, "discountId": discountId },
                            success: function(result) {
                                var configureRuleUrl = result.url;
                                //now load the content
                                loadRequirement(configureRuleUrl, '#addrequirementplaceholder');
                            },
                            error: function(xhr, ajaxOptions, thrownError) {
                                $('#addrequirementplaceholder').html('Failed to load requirement URL');
                            }
                        });
                    } else {
                        $('#addrequirementplaceholder').html('');
                    }
                }

                //array of exisiting discount requirements
                var discountRequirements = [
                    @for (int i = 0; i < Model.DiscountRequirementMetaInfos.Count; i++)
                    {
                        var drmi = Model.DiscountRequirementMetaInfos[i];
                        <text>{ discountRequirementId: @(drmi.DiscountRequirementId), ruleName: "@(drmi.RuleName)", url: "@(Html.Raw(drmi.ConfigurationUrl))" } </text>
                        if (i != Model.DiscountRequirementMetaInfos.Count - 1)
                        {
                            <text>, </text>
                        }
                    }
                ];

                //load HTML for exisiting requirements
                function loadExistingRequirements() {
                    $("#discountRequirementContainer").html('');
                    $("#discountRequirementTemplate").tmpl(discountRequirements).appendTo("#discountRequirementContainer");

                    var discountRequirementsLen = discountRequirements.length;
                    for (var i = 0; i < discountRequirementsLen; i++) {
                        var url = discountRequirements[i].url;
                        var discountRequirementId = discountRequirements[i].discountRequirementId;
                        var placeholderName = '#editrequirementplaceholder' + discountRequirementId;
                        $(placeholderName).html('loading...');
                        loadRequirement(url, placeholderName);
                    }
                }

                //delete requirement rule
                function deleteRequirement(discountRequirementId) {
                    var discountId = @Model.Id;

                    var postData = {
                        discountRequirementId: discountRequirementId,
                        discountId: discountId
                    };
                    addAntiForgeryToken(postData);

                    $.ajax({
                        cache: false,
                        type: "POST",
                        url: "@(Url.Action("DeleteDiscountRequirement", "Discount"))",
                        data: postData,
                        success: function(data) {
                            removeRequirementByElement(discountRequirements, discountRequirementId);
                            loadExistingRequirements();
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                            alert('Failed to delete requirement.');
                        }
                    });

                    function removeRequirementByElement(arrayName, discountRequirementId) {
                        for (var i = 0; i < arrayName.length; i++) {
                            if (arrayName[i].discountRequirementId == discountRequirementId) {
                                arrayName.splice(i, 1);
                            }
                        }
                    }
                }
            </script>

            <!-- Template container -->
            <div id="discountRequirementContainer" style="margin-bottom: 5px;">
            </div>

            <!-- Discount requirement template -->
            <script id="discountRequirementTemplate" type="text/html">
                <div class="panel panel-default" id="editrequirement{{= discountRequirementId }}">
                    <div class="panel-heading">
                        @T("Admin.Promotions.Discounts.Requirements.DiscountRequirementType"): <strong>{{= ruleName }}</strong>
                    </div>
                    <div class="panel-body">
                        <div id="editrequirementplaceholder{{= discountRequirementId }}"></div>
                        <div class="form-group">
                            <div class="col-md-12">
                                <button type="button"
                                       id="deleterequirement{{= discountRequirementId }}"
                                       onclick="deleteRequirement({{= discountRequirementId }})"
                                       class="btn bg-red pull-right">@T("Admin.Promotions.Discounts.Requirements.Remove")</button>
                            </div>
                        </div>
                    </div>
                </div>
            </script>

            <div class="panel panel-primary">
                <div class="panel-heading">
                    @T("Admin.Promotions.Discounts.Requirements.AddNew")
                </div>
                <div class="panel-body">
                    <div class="form-group">
                        <div class="col-md-3">
                            @Html.SDFLabelFor(model => model.AddDiscountRequirement)
                        </div>
                        <div class="col-md-9">
                            @Html.SDFDropDownListFor(model => model.AddDiscountRequirement, Model.AvailableDiscountRequirementRules)
                            @Html.ValidationMessageFor(model => model.AddDiscountRequirement)
                        </div>
                    </div>
                    <div id="addrequirementplaceholder"></div>
                </div>
            </div>
        }
        else
        {
            <div class="panel panel-default">
                <div class="panel-body">
                    @T("Admin.Promotions.Discounts.Requirements.SaveBeforeEdit")
                </div>
            </div>
        }
    </div>
}

@helper TabAppliedToProducts()
{
    <div class="panel-group">
        <div class="panel panel-default">
            @if (Model.Id > 0)
            {
                <div class="panel-body">
                    <div id="products-grid"></div>

                    <script>
                        $(document).ready(function() {
                            $("#products-grid").kendoGrid({
                                dataSource: {
                                    type: "json",
                                    transport: {
                                        read: {
                                            url: "@Html.Raw(Url.Action("ProductList", "Discount", new {discountId = Model.Id}))",
                                            type: "POST",
                                            dataType: "json",
                                            data: addAntiForgeryToken
                                        },
                                        destroy: {
                                            url: "@Html.Raw(Url.Action("ProductDelete", "Discount", new {discountId = Model.Id}))",
                                            type: "POST",
                                            dataType: "json",
                                            data: addAntiForgeryToken
                                        }
                                    },
                                    schema: {
                                        data: "Data",
                                        total: "Total",
                                        errors: "Errors",
                                        model: {
                                            id: "ProductId",
                                            fields: {
                                                ProductName: { editable: false, type: "string" },
                                                ProductId: { editable: false, type: "number" }
                                            }
                                        }
                                    },
                                    error: function(e) {
                                        display_kendoui_grid_error(e);
                                        // Cancel the changes
                                        this.cancelChanges();
                                    },
                                    serverPaging: true,
                                    serverFiltering: true,
                                    serverSorting: true
                                },
                                pageable: {
                                    refresh: true,
                                    numeric: false,
                                    previousNext: false,
                                    info: false
                                },
                                editable: {
                                    confirmation: "@T("Admin.Common.DeleteConfirmation")",
                                    mode: "inline"
                                },
                                scrollable: false,
                                columns: [
                                    {
                                        field: "ProductName",
                                        title: "@T("Admin.Promotions.Discounts.AppliedToProducts.Product")"
                                    }, {
                                        field: "ProductId",
                                        title: "@T("Admin.Common.View")",
                                        width: 150,
                                        template: '<a href="@Url.Content("~/Admin/Product/Edit/")#=ProductId#">@T("Admin.Common.View")</a>'
                                    }, {
                                        command: [
                                            {
                                                name: "destroy",
                                                text: "@T("Admin.Common.Delete")"
                                            }
                                        ],
                                        width: 150
                                    }
                                ]
                            });
                        });
                    </script>
                </div>
                <div class="panel-footer">
                    <button type="submit" id="btnAddNewProduct" onclick="javascript:OpenWindow('@(Url.Action("ProductAddPopup", "Discount", new {discountId = Model.Id, btnId = "btnRefreshProducts", formId = "discount-form"}))', 800, 800, true); return false;" class="btn btn-primary">
                        @T("Admin.Promotions.Discounts.AppliedToProducts.AddNew")
                    </button>
                    <input type="submit" id="btnRefreshProducts" style="display: none" />
                    <script type="text/javascript">
                        $(document).ready(function() {
                            $('#btnRefreshProducts').click(function() {
                                //refresh grid
                                var grid = $("#products-grid").data('kendoGrid');
                                grid.dataSource.read();

                                //return false to don't reload a page
                                return false;
                            });
                        });
                    </script>
                </div>
            }
            else
            {
                <div class="panel-body">
                    @T("Admin.Promotions.Discounts.AppliedToProducts.SaveBeforeEdit")
                </div>
            }
        </div>
    </div>
}

@helper TabAppliedToCategories()
{
    <div class="panel-group">
        <div class="panel panel-default">
            @if (Model.Id > 0)
            {
                <div class="panel-body">
                    <div id="categories-grid"></div>

                    <script>
                        $(document).ready(function() {
                            $("#categories-grid").kendoGrid({
                                dataSource: {
                                    type: "json",
                                    transport: {
                                        read: {
                                            url: "@Html.Raw(Url.Action("CategoryList", "Discount", new {discountId = Model.Id}))",
                                            type: "POST",
                                            dataType: "json",
                                            data: addAntiForgeryToken
                                        },
                                        destroy: {
                                            url: "@Html.Raw(Url.Action("CategoryDelete", "Discount", new {discountId = Model.Id}))",
                                            type: "POST",
                                            dataType: "json",
                                            data: addAntiForgeryToken
                                        }
                                    },
                                    schema: {
                                        data: "Data",
                                        total: "Total",
                                        errors: "Errors",
                                        model: {
                                            id: "CategoryId",
                                            fields: {
                                                CategoryName: { editable: false, type: "string" },
                                                CategoryId: { editable: false, type: "number" }
                                            }
                                        }
                                    },
                                    error: function(e) {
                                        display_kendoui_grid_error(e);
                                        // Cancel the changes
                                        this.cancelChanges();
                                    },
                                    serverPaging: true,
                                    serverFiltering: true,
                                    serverSorting: true
                                },
                                pageable: {
                                    refresh: true,
                                    numeric: false,
                                    previousNext: false,
                                    info: false
                                },
                                editable: {
                                    confirmation: "@T("Admin.Common.DeleteConfirmation")",
                                    mode: "inline"
                                },
                                scrollable: false,
                                columns: [
                                    {
                                        field: "CategoryName",
                                        title: "@T("Admin.Promotions.Discounts.AppliedToCategories.Category")"
                                    }, {
                                        field: "CategoryId",
                                        title: "@T("Admin.Common.View")",
                                        width: 150,
                                        template: '<a href="@Url.Content("~/Admin/Category/Edit/")#=CategoryId#">@T("Admin.Common.View")</a>'
                                    }, {
                                        command: [
                                            {
                                                name: "destroy",
                                                text: "@T("Admin.Common.Delete")"
                                            }
                                        ],
                                        width: 150
                                    }
                                ]
                            });
                        });
                    </script>
                </div>
                <div class="panel-footer">
                    <button type="submit" id="btnAddNewCategory" onclick="javascript:OpenWindow('@(Url.Action("CategoryAddPopup", "Discount", new {discountId = Model.Id, btnId = "btnRefreshCategories", formId = "discount-form"}))', 800, 800, true); return false;" class="btn btn-primary">
                        @T("Admin.Promotions.Discounts.AppliedToCategories.AddNew")
                    </button>
                    <input type="submit" id="btnRefreshCategories" style="display: none" />
                    <script type="text/javascript">
                        $(document).ready(function() {
                            $('#btnRefreshCategories').click(function() {
                                //refresh grid
                                var grid = $("#categories-grid").data('kendoGrid');
                                grid.dataSource.read();

                                //return false to don't reload a page
                                return false;
                            });
                        });
                    </script>
                </div>
            }
            else
            {
                <div class="panel-body">
                    @T("Admin.Promotions.Discounts.AppliedToCategories.SaveBeforeEdit")
                </div>
            }
        </div>
    </div>
}

@helper TabAppliedToManufacturers()
{
    <div class="panel-group">
        <div class="panel panel-default">
            @if (Model.Id > 0)
            {
                <div class="panel-body">
                    <div id="manufacturers-grid"></div>

                    <script>
                        $(document).ready(function() {
                            $("#manufacturers-grid").kendoGrid({
                                dataSource: {
                                    type: "json",
                                    transport: {
                                        read: {
                                            url: "@Html.Raw(Url.Action("ManufacturerList", "Discount", new {discountId = Model.Id}))",
                                            type: "POST",
                                            dataType: "json",
                                            data: addAntiForgeryToken
                                        },
                                        destroy: {
                                            url: "@Html.Raw(Url.Action("ManufacturerDelete", "Discount", new {discountId = Model.Id}))",
                                            type: "POST",
                                            dataType: "json",
                                            data: addAntiForgeryToken
                                        }
                                    },
                                    schema: {
                                        data: "Data",
                                        total: "Total",
                                        errors: "Errors",
                                        model: {
                                            id: "ManufacturerId",
                                            fields: {
                                                ManufacturerName: { editable: false, type: "string" },
                                                ManufacturerId: { editable: false, type: "number" }
                                            }
                                        }
                                    },
                                    error: function(e) {
                                        display_kendoui_grid_error(e);
                                        // Cancel the changes
                                        this.cancelChanges();
                                    },
                                    serverPaging: true,
                                    serverFiltering: true,
                                    serverSorting: true
                                },
                                pageable: {
                                    refresh: true,
                                    numeric: false,
                                    previousNext: false,
                                    info: false
                                },
                                editable: {
                                    confirmation: "@T("Admin.Common.DeleteConfirmation")",
                                    mode: "inline"
                                },
                                scrollable: false,
                                columns: [
                                    {
                                        field: "ManufacturerName",
                                        title: "@T("Admin.Promotions.Discounts.AppliedToManufacturers.Manufacturer")"
                                    }, {
                                        field: "ManufacturerId",
                                        title: "@T("Admin.Common.View")",
                                        width: 150,
                                        template: '<a href="@Url.Content("~/Admin/Manufacturer/Edit/")#=ManufacturerId#">@T("Admin.Common.View")</a>'
                                    }, {
                                        command: [
                                            {
                                                name: "destroy",
                                                text: "@T("Admin.Common.Delete")"
                                            }
                                        ],
                                        width: 150
                                    }
                                ]
                            });
                        });
                    </script>
                </div>
                <div class="panel-footer">
                    <button type="submit" id="btnAddNewManufacturer" onclick="javascript:OpenWindow('@(Url.Action("ManufacturerAddPopup", "Discount", new {discountId = Model.Id, btnId = "btnRefreshManufacturers", formId = "discount-form"}))', 800, 800, true); return false;" class="btn btn-primary">
                        @T("Admin.Promotions.Discounts.AppliedToManufacturers.AddNew")
                    </button>
                    <input type="submit" id="btnRefreshManufacturers" style="display: none" />
                    <script type="text/javascript">
                        $(document).ready(function() {
                            $('#btnRefreshManufacturers').click(function() {
                                //refresh grid
                                var grid = $("#manufacturers-grid").data('kendoGrid');
                                grid.dataSource.read();

                                //return false to don't reload a page
                                return false;
                            });
                        });
                    </script>
                </div>
            }
            else
            {
                <div class="panel-body">
                    @T("Admin.Promotions.Discounts.AppliedToManufacturers.SaveBeforeEdit")
                </div>
            }
        </div>
    </div>
}

@helper TabHistory()
{
    var defaultGridPageSize = EngineContext.Current.Resolve<SDF.Core.Domain.Common.AdminAreaSettings>().DefaultGridPageSize;
    var gridPageSizes = EngineContext.Current.Resolve<SDF.Core.Domain.Common.AdminAreaSettings>().GridPageSizes;

    <div class="panel-group">
        <div class="panel panel-default">
            <div class="panel-body">
                <div id="usagehistory-grid"></div>

                <script>
                    $(document).ready(function() {
                        $("#usagehistory-grid").kendoGrid({
                            dataSource: {
                                type: "json",
                                transport: {
                                    read: {
                                        url: "@Html.Raw(Url.Action("UsageHistoryList", "Discount", new {discountId = Model.Id}))",
                                        type: "POST",
                                        dataType: "json",
                                        data: addAntiForgeryToken
                                    },
                                    destroy: {
                                        url: "@Html.Raw(Url.Action("UsageHistoryDelete", "Discount"))",
                                        type: "POST",
                                        dataType: "json",
                                        data: addAntiForgeryToken
                                    }
                                },
                                schema: {
                                    data: "Data",
                                    total: "Total",
                                    errors: "Errors",
                                    model: {
                                        id: "Id",
                                        fields: {
                                            //do not implicitly specify all fields
                                            //we do it only for fields which implicitly require it
                                            //otherwise, they'll be formatted wrong way
                                            CreatedOn: { type: "date" }
                                        }
                                    }
                                },
                                error: function(e) {
                                    display_kendoui_grid_error(e);
                                    // Cancel the changes
                                    this.cancelChanges();
                                },
                                pageSize: @(defaultGridPageSize),
                                serverPaging: true,
                                serverFiltering: true,
                                serverSorting: true
                            },
                            pageable: {
                                refresh: true,
                                pageSizes: [@(gridPageSizes)]
                            },
                            editable: {
                                confirmation: "@T("Admin.Common.DeleteConfirmation")",
                                mode: "inline"
                            },
                            scrollable: false,
                            columns: [
                            {
                                field: "CreatedOn",
                                title: "@T("Admin.Promotions.Discounts.History.CreatedOn")",
                                width: 200,
                                type: "date",
                                format: "{0:G}"
                            }, {
                                field: "OrderId",
                                title: "@T("Admin.Promotions.Discounts.History.Order")",
                                width: 200,
                                template: '<a href="@Url.Content("~/Admin/Order/Edit/")#=OrderId#">#=OrderId# - @T("Admin.Common.View")</a>'
                            }, {
                                field: "OrderTotal",
                                title: "@T("Admin.Promotions.Discounts.History.OrderTotal")",
                                width: 200
                            }, {
                                command: { name: "destroy", text: "@T("Admin.Common.Delete")" },
                                title: "@T("Admin.Common.Delete")",
                                width: 100
                            }
                            ]
                        });
                    });
                </script>
            </div>
        </div>
    </div>
}
